#include "TestSerializarRaiz.h"

#include "includes.h"
#include "../src/recursoDeAlmacenamiento/RecursoDeAlmacenamientoDirecto.h"
#include "../src/recursoDeAlmacenamiento/FabricaRecursosAlmacenamiento.h"
#include "../src/indices/arbol/Arbol.h"
#include "../src/indices/Elemento.h"

TestSerializarRaiz::TestSerializarRaiz() {


}

TestSerializarRaiz::~TestSerializarRaiz() {

}

void TestSerializarRaiz::run(){
	this->serializarRaiz();
}

void TestSerializarRaiz::serializarRaiz(){

	TipoClave* extractor = new TipoClaveString();

	system("rm -r -f ./testraiz*");
	Arbol arbol("./testraiz",extractor,10,4);
	arbol.inicializar();
	/* Se espera que la raiz tenga al menos el doble del tamanio que un bloque normal*/
	cantBytes tamanioEsperado = BloqueArbol::calcularTamanio(10,4);
	cout << "esperado " << tamanioEsperado << endl;


	Elemento e(Key(new ClaveString("pepe")),123);
	arbol.insertar(e);
	Elemento  d(Key(new ClaveString("coco")),456);
	arbol.insertar(d);

	BloqueArbol* raiz = arbol.getRaiz();

	assert(raiz->getTamanio() == tamanioEsperado, "Test Tamanio Raiz");
cout<<"la primer Clave: "<< raiz->getClaves()[0].toString() <<std::endl;
	assert(Key(new ClaveString("coco")) == raiz->getClaves()[0],"Test Clave Raiz 1");
	assert(Key(new ClaveString("pepe")) == raiz->getClaves()[1],"Test Clave Raiz 2");


}
